home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
graphic
/
pbmpl91d.zip
/
PBMPLUS
/
MAN
/
PPMFORGE.MAN
< prev
next >
Wrap
Text File
|
1993-01-08
|
21KB
|
423 lines
ppmforge(1) Unix Programmer's Manual ppmforge(1)
NAME
ppmforge - fractal forgeries of clouds, planets, and starry skies
SYNOPSIS
ppmforge [-clouds] [-night] [-dimension dimen] [-hour hour] [-
----- ----
inclination|-tilt angle] [-mesh size] [-power factor] [-glaciers
----- ---- ------
level] [-ice level] [-saturation sat] [-seed seed] [-stars
----- ----- --- ----
fraction] [-xsize|-width width] [-ysize|-height height]
-------- ----- ------
DESCRIPTION
ppmforge generates three kinds of ``random fractal forgeries,'' the term
coined by Richard F. Voss of the IBM Thomas J. Watson Research Center for
seemingly realistic pictures of natural objects generated by simple
algorithms embodying randomness and fractal self-similarity. The
techniques used by ppmforge are essentially those given by Voss[1],
particularly the technique of spectral synthesis explained in more detail
by Dietmar Saupe[2].
The program generates two varieties of pictures: planets and clouds,
which are just different renderings of data generated in an identical
manner, illustrating the unity of the fractal structure of these very
different objects. A third type of picture, a starry sky, is synthesised
directly from pseudorandom numbers.
The generation of planets or clouds begins with the preparation of an
array of random data in the frequency domain. The size of this array,
the ``mesh size,'' can be set with the -mesh option; the larger the mesh
the more realistic the pictures but the calculation time and memory
requirement increases as the square of the mesh size. The fractal
dimension, which you can specify with the -dimension option, determines
the roughness of the terrain on the planet or the scale of detail in the
clouds. As the fractal dimension is increased, more high frequency
components are added into the random mesh.
Once the mesh is generated, an inverse two dimensional Fourier transform
is performed upon it. This converts the original random frequency domain
data into spatial amplitudes. We scale the real components that result
from the Fourier transform into numbers from 0 to 1 associated with each
point on the mesh. You can further modify this number by applying a
``power law scale'' to it with the -power option. Unity scale leaves
the numbers unmodified; a power scale of 0.5 takes the square root of the
numbers in the mesh, while a power scale of 3 replaces the numbers in the
mesh with their cubes. Power law scaling is best envisioned by thinking
of the data as representing the elevation of terrain; powers less than 1
yield landscapes with vertical scarps that look like glacially-carved
valleys; powers greater than one make fairy-castle spires (which require
large mesh sizes and high resolution for best results).
After these calculations, we have a array of the specified size
containing numbers that range from 0 to 1. The pixmaps are generated as
follows:
Clouds A colour map is created that ranges from pure blue to white by
increasing admixture (desaturation) of blue with white.
Numbers less than 0.5 are coloured blue, numbers between 0.5
and 1.0 are coloured with corresponding levels of white, with
25 October 1991 1
ppmforge(1) Unix Programmer's Manual ppmforge(1)
1.0 being pure white.
Planet The mesh is projected onto a sphere. Values less than 0.5 are
treated as water and values between 0.5 and 1.0 as land. The
water areas are coloured based upon the water depth, and land
based on its elevation. The random depth data are used to
create clouds over the oceans. An atmosphere approximately
like the Earth's is simulated; its light absorption is
calculated to create a blue cast around the limb of the planet.
A function that rises from 0 to 1 based on latitude is
modulated by the local elevation to generate polar ice caps-
-high altitude terrain carries glaciers farther from the pole.
Based on the position of the star with respect to the observer,
the apparent colour of each pixel of the planet is calculated
by ray-tracing from the star to the planet to the observer and
applying a lighting model that sums ambient light and diffuse
reflection (for most planets ambient light is zero, as their
primary star is the only source of illumination). Additional
random data are used to generate stars around the planet.
Night A sequence of pseudorandom numbers is used to generate stars
with a user specified density.
Cloud pictures always contain 256 or fewer colours and may be displayed
on most colour mapped devices without further processing. Planet
pictures often contain tens of thousands of colours which must be
compressed with ppmquant or ppmdither before encoding in a colour mapped
format. If the display resolution is high enough, ppmdither generally
produces better looking planets. ppmquant tends to create discrete
colour bands, particularly in the oceans, which are unrealistic and
distracting. The number of colours in starry sky pictures generated with
the -night option depends on the value specified for -saturation. Small
values limit the colour temperature distribution of the stars and reduce
the number of colours in the image. If the -saturation is set to 0, none
of the stars will be coloured and the resulting image will never contain
more than 256 colours. Night sky pictures with many different star
colours often look best when colour compressed by pnmdepth rather than
ppmquant or ppmdither. Try newmaxval settings of 63, 31, or 15 with
---------
pnmdepth to reduce the number of colours in the picture to 256 or fewer.
OPTIONS
-clouds Generate clouds. A pixmap of fractal clouds is generated.
Selecting clouds sets the default for fractal dimension to 2.15
and power scale factor to 0.75.
-dimension dimen
-----
Sets the fractal dimension to the specified dimen, which may be
-----
any floating point value between 0 and 3. Higher fractal
dimensions create more ``chaotic'' images, which require higher
resolution output and a larger FFT mesh size to look good. If
no dimension is specified, 2.4 is used when generating planets
and 2.15 for clouds.
25 October 1991 2
ppmforge(1) Unix Programmer's Manual ppmforge(1)
-glaciers level
-----
The floating point level setting controls the extent to which
-----
terrain elevation causes ice to appear at lower latitudes. The
default value of 0.75 makes the polar caps extend toward the
equator across h